#ifndef _CPU_H_
#define _CPU_H_

#include "soc.h"

#define CPU_EnableIrq()  asm(".thumb\ncpsie	i\n")
#define CPU_DisableIrq() asm(".thumb\ncpsid i\n")
/**
 * 确保前一次内存访问完成才会执行下一条指令，当执行DSB指令时，它确保在DSB
 * 之前的所有显式数据内存传输指令都已经在内存中读取或写入完成，同时确保任
 * 何后续的指令都将在DSB执行之后开始执行。通过插入ISB指令，处理器会将流水
 * 线中的指令全部刷新，从而确保之前的指令不会影响后续指令的执行，并且后续
 * 指令将从正确的上下文开始重新获取。 */
#define CPU_Sync()       asm(".thumb\ndsb\nisb")


#endif /* _CPU_H_ */
